.class public Lcom/htc/android/footprints/utils/ExifInterface;
.super Ljava/lang/Object;
.source "ExifInterface.java"


# static fields
.field static final ORIENTATION_FLIP_HORIZONTAL:I = 0x2

.field static final ORIENTATION_FLIP_VERTICAL:I = 0x4

.field static final ORIENTATION_NORMAL:I = 0x1

.field static final ORIENTATION_ROTATE_180:I = 0x3

.field static final ORIENTATION_ROTATE_270:I = 0x8

.field static final ORIENTATION_ROTATE_90:I = 0x6

.field static final ORIENTATION_TRANSPOSE:I = 0x5

.field static final ORIENTATION_TRANSVERSE:I = 0x7

.field static final ORIENTATION_UNDEFINED:I = 0x0

.field static final TAG_DATE_TIME_ORIGINAL:Ljava/lang/String; = "DateTimeOriginal"

.field static final TAG_FLASH:Ljava/lang/String; = "Flash"

.field static final TAG_GPS_LATITUDE:Ljava/lang/String; = "GPSLatitude"

.field static final TAG_GPS_LATITUDE_REF:Ljava/lang/String; = "GPSLatitudeRef"

.field static final TAG_GPS_LONGITUDE:Ljava/lang/String; = "GPSLongitude"

.field static final TAG_GPS_LONGITUDE_REF:Ljava/lang/String; = "GPSLongitudeRef"

.field static final TAG_IMAGE_LENGTH:Ljava/lang/String; = "ImageLength"

.field static final TAG_IMAGE_WIDTH:Ljava/lang/String; = "ImageWidth"

.field static final TAG_MAKE:Ljava/lang/String; = "Make"

.field static final TAG_MODEL:Ljava/lang/String; = "Model"

.field static final TAG_ORIENTATION:Ljava/lang/String; = "Orientation"


# instance fields
.field private mCachedAttributes:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation
.end field

.field private mFilename:Ljava/lang/String;

.field private mHasThumbnail:Z

.field private mSavedAttributes:Z


# direct methods
.method static constructor <clinit>()V
    .locals 1

    .prologue
    .line 61
    const-string v0, "exif_footprint"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    .line 62
    return-void
.end method

.method public constructor <init>(Ljava/lang/String;)V
    .locals 1
    .parameter "fileName"

    .prologue
    const/4 v0, 0x0

    .line 64
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 56
    iput-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mSavedAttributes:Z

    .line 57
    iput-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mHasThumbnail:Z

    .line 58
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    .line 65
    iput-object p1, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    .line 66
    return-void
.end method

.method private native appendThumbnailNative(Ljava/lang/String;Ljava/lang/String;)Z
.end method

.method private native commitChangesNative(Ljava/lang/String;)V
.end method

.method public static convertRationalLatLonToDecimalString(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    .locals 12
    .parameter "rationalString"
    .parameter "ref"
    .parameter "usePositiveNegative"

    .prologue
    const-string v9, "/"

    .line 208
    :try_start_0
    const-string v9, ","

    invoke-virtual {p0, v9}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v5

    .line 211
    .local v5, parts:[Ljava/lang/String;
    const/4 v9, 0x0

    aget-object v9, v5, v9

    const-string v10, "/"

    invoke-virtual {v9, v10}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v4

    .line 212
    .local v4, pair:[Ljava/lang/String;
    const/4 v9, 0x0

    aget-object v9, v4, v9

    invoke-virtual {v9}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v9

    invoke-static {v9}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v9

    const/4 v10, 0x1

    aget-object v10, v4, v10

    invoke-virtual {v10}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v10

    invoke-static {v10}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v10

    div-float/2addr v9, v10

    float-to-int v0, v9

    .line 214
    .local v0, degrees:I
    const/4 v9, 0x1

    aget-object v9, v5, v9

    const-string v10, "/"

    invoke-virtual {v9, v10}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v4

    .line 215
    const/4 v9, 0x0

    aget-object v9, v4, v9

    invoke-virtual {v9}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v9

    invoke-static {v9}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v9

    const/4 v10, 0x1

    aget-object v10, v4, v10

    invoke-virtual {v10}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v10

    invoke-static {v10}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v10

    div-float/2addr v9, v10

    float-to-int v2, v9

    .line 217
    .local v2, minutes:I
    const/4 v9, 0x2

    aget-object v9, v5, v9

    const-string v10, "/"

    invoke-virtual {v9, v10}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v4

    .line 218
    const/4 v9, 0x0

    aget-object v9, v4, v9

    invoke-virtual {v9}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v9

    invoke-static {v9}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v9

    const/4 v10, 0x1

    aget-object v10, v4, v10

    invoke-virtual {v10}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v10

    invoke-static {v10}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v10

    div-float v8, v9, v10

    .line 220
    .local v8, seconds:F
    int-to-float v9, v0

    int-to-float v10, v2

    const/high16 v11, 0x4270

    div-float/2addr v10, v11

    add-float/2addr v9, v10

    const/high16 v10, 0x4561

    div-float v10, v8, v10

    add-float v7, v9, v10

    .line 222
    .local v7, result:F
    invoke-static {v7}, Ljava/lang/String;->valueOf(F)Ljava/lang/String;

    move-result-object v6

    .line 223
    .local v6, preliminaryResult:Ljava/lang/String;
    if-eqz p2, :cond_2

    .line 224
    const-string v9, "S"

    invoke-virtual {p1, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v9

    if-nez v9, :cond_0

    const-string v9, "E"

    invoke-virtual {p1, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v9

    if-eqz v9, :cond_1

    :cond_0
    const-string v9, "-"

    move-object v3, v9

    .line 225
    .local v3, neg:Ljava/lang/String;
    :goto_0
    new-instance v9, Ljava/lang/StringBuilder;

    invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v9

    .line 231
    .end local v0           #degrees:I
    .end local v2           #minutes:I
    .end local v3           #neg:Ljava/lang/String;
    .end local v4           #pair:[Ljava/lang/String;
    .end local v5           #parts:[Ljava/lang/String;
    .end local v6           #preliminaryResult:Ljava/lang/String;
    .end local v7           #result:F
    .end local v8           #seconds:F
    :goto_1
    return-object v9

    .line 224
    .restart local v0       #degrees:I
    .restart local v2       #minutes:I
    .restart local v4       #pair:[Ljava/lang/String;
    .restart local v5       #parts:[Ljava/lang/String;
    .restart local v6       #preliminaryResult:Ljava/lang/String;
    .restart local v7       #result:F
    .restart local v8       #seconds:F
    :cond_1
    const-string v9, ""

    move-object v3, v9

    goto :goto_0

    .line 227
    :cond_2
    new-instance v9, Ljava/lang/StringBuilder;

    invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v9, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    const/16 v10, 0xba

    invoke-static {v10}, Ljava/lang/String;->valueOf(C)Ljava/lang/String;

    move-result-object v10

    invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    const-string v10, " "

    invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    invoke-virtual {v9, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v9

    invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    move-result-object v9

    goto :goto_1

    .line 229
    .end local v0           #degrees:I
    .end local v2           #minutes:I
    .end local v4           #pair:[Ljava/lang/String;
    .end local v5           #parts:[Ljava/lang/String;
    .end local v6           #preliminaryResult:Ljava/lang/String;
    .end local v7           #result:F
    .end local v8           #seconds:F
    :catch_0
    move-exception v9

    move-object v1, v9

    .line 231
    .local v1, ex:Ljava/lang/Exception;
    const/4 v9, 0x0

    goto :goto_1
.end method

.method private native getAttributesNative(Ljava/lang/String;)Ljava/lang/String;
.end method

.method private native getThumbnailNative(Ljava/lang/String;)[B
.end method

.method public static makeLatLongString(D)Ljava/lang/String;
    .locals 13
    .parameter "d"

    .prologue
    const-wide/high16 v10, 0x404e

    const-string v12, "/1,"

    .line 236
    invoke-static {p0, p1}, Ljava/lang/Math;->abs(D)D

    move-result-wide p0

    .line 238
    double-to-int v0, p0

    .line 240
    .local v0, degrees:I
    int-to-double v6, v0

    sub-double v2, p0, v6

    .line 241
    .local v2, remainder:D
    mul-double v6, v2, v10

    double-to-int v1, v6

    .line 242
    .local v1, minutes:I
    mul-double v6, v2, v10

    int-to-double v8, v1

    sub-double/2addr v6, v8

    mul-double/2addr v6, v10

    const-wide v8, 0x408f400000000000L

    mul-double/2addr v6, v8

    double-to-int v5, v6

    .line 244
    .local v5, seconds:I
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "/1,"

    invoke-virtual {v6, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "/1,"

    invoke-virtual {v6, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "/1000"

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    .line 245
    .local v4, retVal:Ljava/lang/String;
    return-object v4
.end method

.method public static makeLatStringRef(D)Ljava/lang/String;
    .locals 2
    .parameter "lat"

    .prologue
    .line 249
    const-wide/16 v0, 0x0

    cmpl-double v0, p0, v0

    if-ltz v0, :cond_0

    const-string v0, "N"

    :goto_0
    return-object v0

    :cond_0
    const-string v0, "S"

    goto :goto_0
.end method

.method public static makeLonStringRef(D)Ljava/lang/String;
    .locals 2
    .parameter "lon"

    .prologue
    .line 253
    const-wide/16 v0, 0x0

    cmpl-double v0, p0, v0

    if-ltz v0, :cond_0

    const-string v0, "W"

    :goto_0
    return-object v0

    :cond_0
    const-string v0, "E"

    goto :goto_0
.end method

.method public static orientationToString(I)Ljava/lang/String;
    .locals 1
    .parameter "orientation"

    .prologue
    .line 157
    packed-switch p0, :pswitch_data_0

    .line 166
    const-string v0, "Undefined"

    .line 168
    .local v0, orientationString:Ljava/lang/String;
    :goto_0
    return-object v0

    .line 158
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_0
    const-string v0, "Normal"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 159
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_1
    const-string v0, "Flipped horizontal"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 160
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_2
    const-string v0, "Rotated 180 degrees"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 161
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_3
    const-string v0, "Upside down mirror"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 162
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_4
    const-string v0, "Transposed"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 163
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_5
    const-string v0, "Rotated 90 degrees"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 164
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_6
    const-string v0, "Transversed"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 165
    .end local v0           #orientationString:Ljava/lang/String;
    :pswitch_7
    const-string v0, "Rotated 270 degrees"

    .restart local v0       #orientationString:Ljava/lang/String;
    goto :goto_0

    .line 157
    :pswitch_data_0
    .packed-switch 0x1
        :pswitch_0
        :pswitch_1
        :pswitch_2
        :pswitch_3
        :pswitch_4
        :pswitch_5
        :pswitch_6
        :pswitch_7
    .end packed-switch
.end method

.method private native saveAttributesNative(Ljava/lang/String;Ljava/lang/String;)V
.end method


# virtual methods
.method public appendThumbnail(Ljava/lang/String;)Z
    .locals 2
    .parameter "thumbnailFileName"

    .prologue
    .line 177
    iget-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mSavedAttributes:Z

    if-nez v0, :cond_0

    .line 178
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "Must call saveAttributes before calling appendThumbnail"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 180
    :cond_0
    iget-object v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-direct {p0, v0, p1}, Lcom/htc/android/footprints/utils/ExifInterface;->appendThumbnailNative(Ljava/lang/String;Ljava/lang/String;)Z

    move-result v0

    iput-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mHasThumbnail:Z

    .line 181
    iget-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mHasThumbnail:Z

    return v0
.end method

.method public commitChanges()V
    .locals 2

    .prologue
    .line 189
    iget-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mSavedAttributes:Z

    if-nez v0, :cond_0

    .line 190
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "Must call saveAttributes before calling commitChanges"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 192
    :cond_0
    iget-object v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-direct {p0, v0}, Lcom/htc/android/footprints/utils/ExifInterface;->commitChangesNative(Ljava/lang/String;)V

    .line 193
    return-void
.end method

.method public getAttributes()Ljava/util/HashMap;
    .locals 11
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .prologue
    const/16 v10, 0x20

    .line 112
    iget-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    if-eqz v9, :cond_0

    .line 113
    iget-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    .line 148
    :goto_0
    return-object v9

    .line 118
    :cond_0
    new-instance v9, Ljava/util/HashMap;

    invoke-direct {v9}, Ljava/util/HashMap;-><init>()V

    iput-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    .line 120
    iget-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-direct {p0, v9}, Lcom/htc/android/footprints/utils/ExifInterface;->getAttributesNative(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    .line 123
    .local v2, attrStr:Ljava/lang/String;
    invoke-virtual {v2, v10}, Ljava/lang/String;->indexOf(I)I

    move-result v8

    .line 124
    .local v8, ptr:I
    const/4 v9, 0x0

    invoke-virtual {v2, v9, v8}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v9

    invoke-static {v9}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

    move-result v4

    .line 125
    .local v4, count:I
    add-int/lit8 v8, v8, 0x1

    .line 127
    const/4 v6, 0x0

    .local v6, i:I
    :goto_1
    if-ge v6, v4, :cond_2

    .line 129
    const/16 v9, 0x3d

    invoke-virtual {v2, v9, v8}, Ljava/lang/String;->indexOf(II)I

    move-result v5

    .line 130
    .local v5, equalPos:I
    invoke-virtual {v2, v8, v5}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v1

    .line 131
    .local v1, attrName:Ljava/lang/String;
    add-int/lit8 v8, v5, 0x1

    .line 134
    invoke-virtual {v2, v10, v8}, Ljava/lang/String;->indexOf(II)I

    move-result v7

    .line 135
    .local v7, lenPos:I
    invoke-virtual {v2, v8, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v9

    invoke-static {v9}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

    move-result v0

    .line 136
    .local v0, attrLen:I
    add-int/lit8 v8, v7, 0x1

    .line 139
    add-int v9, v8, v0

    invoke-virtual {v2, v8, v9}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v3

    .line 140
    .local v3, attrValue:Ljava/lang/String;
    add-int/2addr v8, v0

    .line 142
    const-string v9, "hasThumbnail"

    invoke-virtual {v1, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v9

    if-eqz v9, :cond_1

    .line 143
    const-string v9, "true"

    invoke-virtual {v3, v9}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v9

    iput-boolean v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mHasThumbnail:Z

    .line 127
    :goto_2
    add-int/lit8 v6, v6, 0x1

    goto :goto_1

    .line 145
    :cond_1
    iget-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    invoke-virtual {v9, v1, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_2

    .line 148
    .end local v0           #attrLen:I
    .end local v1           #attrName:Ljava/lang/String;
    .end local v3           #attrValue:Ljava/lang/String;
    .end local v5           #equalPos:I
    .end local v7           #lenPos:I
    :cond_2
    iget-object v9, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mCachedAttributes:Ljava/util/HashMap;

    goto :goto_0
.end method

.method public getThumbnail()[B
    .locals 1

    .prologue
    .line 203
    iget-object v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-direct {p0, v0}, Lcom/htc/android/footprints/utils/ExifInterface;->getThumbnailNative(Ljava/lang/String;)[B

    move-result-object v0

    return-object v0
.end method

.method public hasThumbnail()Z
    .locals 1

    .prologue
    .line 196
    iget-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mSavedAttributes:Z

    if-nez v0, :cond_0

    .line 197
    invoke-virtual {p0}, Lcom/htc/android/footprints/utils/ExifInterface;->getAttributes()Ljava/util/HashMap;

    .line 199
    :cond_0
    iget-boolean v0, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mHasThumbnail:Z

    return v0
.end method

.method public saveAttributes(Ljava/util/HashMap;)V
    .locals 10
    .parameter
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;)V"
        }
    .end annotation

    .prologue
    .local p1, attributes:Ljava/util/HashMap;,"Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;"
    const-string v9, "hasThumbnail"

    const-string v8, " "

    .line 79
    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    .line 80
    .local v3, sb:Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Ljava/util/HashMap;->size()I

    move-result v4

    .line 81
    .local v4, size:I
    const-string v6, "hasThumbnail"

    invoke-virtual {p1, v9}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z

    move-result v6

    if-eqz v6, :cond_0

    .line 82
    add-int/lit8 v4, v4, -0x1

    .line 84
    :cond_0
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, " "

    invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 85
    invoke-virtual {p1}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v6

    invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .line 86
    .local v1, keyIterator:Ljava/util/Iterator;
    :cond_1
    :goto_0
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_2

    .line 87
    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 88
    .local v0, key:Ljava/lang/String;
    const-string v6, "hasThumbnail"

    invoke-virtual {v0, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v6

    if-nez v6, :cond_1

    .line 91
    invoke-virtual {p1, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/lang/String;

    .line 92
    .local v5, val:Ljava/lang/String;
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 93
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v5}, Ljava/lang/String;->length()I

    move-result v7

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, " "

    invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 94
    invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_0

    .line 96
    .end local v0           #key:Ljava/lang/String;
    .end local v5           #val:Ljava/lang/String;
    :cond_2
    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    .line 100
    .local v2, s:Ljava/lang/String;
    const-string v6, "exif"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string v8, "file name = "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    iget-object v8, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v6, v7}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 102
    iget-object v6, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mFilename:Ljava/lang/String;

    invoke-direct {p0, v6, v2}, Lcom/htc/android/footprints/utils/ExifInterface;->saveAttributesNative(Ljava/lang/String;Ljava/lang/String;)V

    .line 103
    const/4 v6, 0x1

    iput-boolean v6, p0, Lcom/htc/android/footprints/utils/ExifInterface;->mSavedAttributes:Z

    .line 104
    return-void
.end method
